home *** CD-ROM | disk | FTP | other *** search
- {
- BS> Can anone out there tell me where you get the resoloution out of a Gif file
- BS> from? What I am saying is, I would like to make a program to look at a Gif
- BS> and grab the resoloution out of it for my dir list files. Any help would be
- BS> appreciated.
-
- I've written a freeware program to do just this. Program name is GRR,
- and Pascal source accompanies it. Here is the source from the latest
- (and only) version. I apologize for the lack of comments, but it is
- rather straightforward, I think. }
-
- program getGIFheader;
- uses
- dos;
- const
- progdata = 'GRR- Free DOS utility: GIF file info displayer.';
- progdat2 =
- 'V1.00: August 19, 1993. (c) 1993 by David Daniel Anderson - Reign Ware.';
- usage =
- 'Usage: GRR directory and/or file_spec[.GIF] Example: GRR cindyc*';
- var
- header : string[6];
- gpixn : byte;
- gpixels, gback, rwidthLSB, rheightLSB, rwidth, rheight : char;
- gifname : string[12];
- giffile : text;
- dirinfo : searchrec;
- gpath : pathstr;
- gdir : dirstr;
- gname : namestr;
- gext : extstr;
-
- procedure showhelp;
- begin {-- showhelp --}
- writeln(progdata);
- writeln(progdat2);
- writeln(usage);
- halt;
- end {-- showhelp --};
-
- function taffy(astring : string; newlen : byte) : string;
- begin {-- taffy --}
- while (length(astring) < newlen) do
- astring := astring + ' ';
- taffy := astring;
- end {-- taffy --};
-
- function LeadingZero(w : Word) : string;
- var
- s : string;
- begin {-- LeadingZero --}
- Str(w : 0, s);
- if (length(s) = 1) then
- s := '0' + s;
- LeadingZero := s;
- end {-- LeadingZero --};
-
- procedure writeftime(fdatetime : longint);
- var
- Year2 : string;
- DateTimeInf : DateTime;
- begin {-- writeftime --}
- UnpackTime(fdatetime, DateTimeInf);
- with DateTimeInf do
- begin
- Year2 := LeadingZero(Year);
- Delete(Year2, 1, 2);
- Write(LeadingZero(Month), '-', LeadingZero(Day), '-', Year2, ' ',
- LeadingZero(Hour), ':', LeadingZero(Min), ':', LeadingZero(Sec));
- end;
- end {-- writeftime --};
-
-
- procedure displaygifscreenstats(screendes : byte);
- var
- GCM : Boolean;
- begin {-- displaygifscreenstats --}
- GCM := screendes > 128;
- if (screendes > 128) then
- screendes := screendes - 128;
- if (screendes > 64) then
- screendes := screendes - 64;
- if (screendes > 32) then
- screendes := screendes - 32;
- if (screendes > 16) then
- screendes := screendes - 16;
- if (screendes > 8) then
- screendes := screendes - 8;
- case (screendes) of
- 0: Write(' 2');
- 1: Write(' 4');
- 2: Write(' 8');
- 3: Write(' 16');
- 4: Write(' 32');
- 5: Write(' 64');
- 6: Write('128');
- 7: Write('256');
- end {-- CASE --};
- if (GCM) then
- Write(' ] GCM/')
- else
- Write(' ] ---/');
- end {-- displaygifscreenstats --};
-
- procedure checkforgiflite(var thefile : text);
- var
- ic : Word;
- dummy, glite : char;
- gliteword : string[7];
- begin {-- checkforgiflite --}
- for ic := 13 to 784 do
- read(thefile, dummy);
- gliteword := ' ';
- for ic := 1 to 7 do
- begin
- read(thefile, glite);
- gliteword[ic] := glite;
- end;
- if (pos('GIFLITE', gliteword) = 1) then
- Write('GL')
- else
- Write('--');
- end {-- checkforgiflite --};
-
- begin {-- getGIFheader --}
- gpath := '';
- gpath := paramstr(1);
- if (gpath = '') then
- gpath := '*.gif';
- if (pos('.', gpath) <> 0) then
- begin
- gpath := copy(gpath, 1, pos('.', gpath));
- gpath := gpath + 'gif'
- end
- else
- gpath := gpath + '*.gif';
- fsplit(fexpand(gpath), gdir, gname, gext);
- findfirst(gpath, archive, dirinfo);
- if (doserror <> 0) then
- showhelp;
- while (doserror = 0) do
- begin
- gifname := dirinfo.name;
- assign(giffile, gdir + gifname);
- reset(giffile);
- read(giffile, header);
- if (pos('GIF', header) <> 1) then
- header := '?_GIF?';
- read(giffile, rwidthLSB, rwidth, rheightLSB, rheight, gpixels, gback);
- gifname := taffy(gifname, 12);
- Write(gifname, ' ', dirinfo.size:7, ' ');
- writeftime(dirinfo.time);
- Write(' ', header, ' [');
- Write((ord(rwidthLSB) + (256 * ord(rwidth))):4, ' ',
- (ord(rheightLSB) + (256 * ord(rheight))):4, ' ');
- gpixn := ord(gpixels);
- displaygifscreenstats(gpixn);
- { write ( ', ', ord ( gback )); }
- { This is the background color, commented out since it is not used }
- checkforgiflite(giffile);
- writeln;
- close(giffile);
- findnext(dirinfo);
- end;
- end {-- getGIFheader --}.